// Generated from crn.g4 by ANTLR 4.1

package odesimulation;

import java.util.HashMap;

import org.antlr.v4.runtime.misc.NotNull;
import org.antlr.v4.runtime.tree.ParseTreeListener;

/**
 * This interface defines a complete listener for a parse tree produced by
 * {@link crnParser}.
 */
public interface crnListener extends ParseTreeListener {
	/**
	 * Enter a parse tree produced by {@link crnParser#reaction}.
	 * @param ctx the parse tree
	 */
	void enterReaction(@NotNull crnParser.ReactionContext ctx);
	/**
	 * Exit a parse tree produced by {@link crnParser#reaction}.
	 * @param ctx the parse tree
	 */
	void exitReaction(@NotNull crnParser.ReactionContext ctx);

	/**
	 * Enter a parse tree produced by {@link crnParser#reacdecl}.
	 * @param ctx the parse tree
	 */
	void enterReacdecl(@NotNull crnParser.ReacdeclContext ctx);
	/**
	 * Exit a parse tree produced by {@link crnParser#reacdecl}.
	 * @param ctx the parse tree
	 */
	void exitReacdecl(@NotNull crnParser.ReacdeclContext ctx);

	/**
	 * Enter a parse tree produced by {@link crnParser#matrix}.
	 * @param ctx the parse tree
	 */
	void enterMatrix(@NotNull crnParser.MatrixContext ctx);
	/**
	 * Exit a parse tree produced by {@link crnParser#matrix}.
	 * @param ctx the parse tree
	 */
	void exitMatrix(@NotNull crnParser.MatrixContext ctx);

	/**
	 * Enter a parse tree produced by {@link crnParser#leftside}.
	 * @param ctx the parse tree
	 */
	void enterLeftside(@NotNull crnParser.LeftsideContext ctx);
	/**
	 * Exit a parse tree produced by {@link crnParser#leftside}.
	 * @param ctx the parse tree
	 */
	void exitLeftside(@NotNull crnParser.LeftsideContext ctx);

	/**
	 * Enter a parse tree produced by {@link crnParser#km}.
	 * @param ctx the parse tree
	 */
	void enterKm(@NotNull crnParser.KmContext ctx);
	/**
	 * Exit a parse tree produced by {@link crnParser#km}.
	 * @param ctx the parse tree
	 */
	void exitKm(@NotNull crnParser.KmContext ctx);

	/**
	 * Enter a parse tree produced by {@link crnParser#reactionset}.
	 * @param ctx the parse tree
	 */
	void enterReactionset(@NotNull crnParser.ReactionsetContext ctx);
	/**
	 * Exit a parse tree produced by {@link crnParser#reactionset}.
	 * @param ctx the parse tree
	 */
	void exitReactionset(@NotNull crnParser.ReactionsetContext ctx);

	/**
	 * Enter a parse tree produced by {@link crnParser#id}.
	 * @param ctx the parse tree
	 */
	void enterId(@NotNull crnParser.IdContext ctx);
	/**
	 * Exit a parse tree produced by {@link crnParser#id}.
	 * @param ctx the parse tree
	 */
	void exitId(@NotNull crnParser.IdContext ctx);

	/**
	 * Enter a parse tree produced by {@link crnParser#ki}.
	 * @param ctx the parse tree
	 */
	void enterKi(@NotNull crnParser.KiContext ctx);
	/**
	 * Exit a parse tree produced by {@link crnParser#ki}.
	 * @param ctx the parse tree
	 */
	void exitKi(@NotNull crnParser.KiContext ctx);

	/**
	 * Enter a parse tree produced by {@link crnParser#enzreaction}.
	 * @param ctx the parse tree
	 */
	void enterEnzreaction(@NotNull crnParser.EnzreactionContext ctx);
	/**
	 * Exit a parse tree produced by {@link crnParser#enzreaction}.
	 * @param ctx the parse tree
	 */
	void exitEnzreaction(@NotNull crnParser.EnzreactionContext ctx);

	/**
	 * Enter a parse tree produced by {@link crnParser#enzdecl}.
	 * @param ctx the parse tree
	 */
	void enterEnzdecl(@NotNull crnParser.EnzdeclContext ctx);
	/**
	 * Exit a parse tree produced by {@link crnParser#enzdecl}.
	 * @param ctx the parse tree
	 */
	void exitEnzdecl(@NotNull crnParser.EnzdeclContext ctx);

	/**
	 * Enter a parse tree produced by {@link crnParser#enzval}.
	 * @param ctx the parse tree
	 */
	void enterEnzval(@NotNull crnParser.EnzvalContext ctx);
	/**
	 * Exit a parse tree produced by {@link crnParser#enzval}.
	 * @param ctx the parse tree
	 */
	void exitEnzval(@NotNull crnParser.EnzvalContext ctx);

	/**
	 * Enter a parse tree produced by {@link crnParser#enzrightside}.
	 * @param ctx the parse tree
	 */
	void enterEnzrightside(@NotNull crnParser.EnzrightsideContext ctx);
	/**
	 * Exit a parse tree produced by {@link crnParser#enzrightside}.
	 * @param ctx the parse tree
	 */
	void exitEnzrightside(@NotNull crnParser.EnzrightsideContext ctx);

	/**
	 * Enter a parse tree produced by {@link crnParser#rightside}.
	 * @param ctx the parse tree
	 */
	void enterRightside(@NotNull crnParser.RightsideContext ctx);
	/**
	 * Exit a parse tree produced by {@link crnParser#rightside}.
	 * @param ctx the parse tree
	 */
	void exitRightside(@NotNull crnParser.RightsideContext ctx);

	/**
	 * Enter a parse tree produced by {@link crnParser#enzleftside}.
	 * @param ctx the parse tree
	 */
	void enterEnzleftside(@NotNull crnParser.EnzleftsideContext ctx);
	/**
	 * Exit a parse tree produced by {@link crnParser#enzleftside}.
	 * @param ctx the parse tree
	 */
	void exitEnzleftside(@NotNull crnParser.EnzleftsideContext ctx);

	/**
	 * Enter a parse tree produced by {@link crnParser#iddecl}.
	 * @param ctx the parse tree
	 */
	void enterIddecl(@NotNull crnParser.IddeclContext ctx);
	/**
	 * Exit a parse tree produced by {@link crnParser#iddecl}.
	 * @param ctx the parse tree
	 */
	void exitIddecl(@NotNull crnParser.IddeclContext ctx);

	/**
	 * Enter a parse tree produced by {@link crnParser#decl}.
	 * @param ctx the parse tree
	 */
	void enterDecl(@NotNull crnParser.DeclContext ctx);
	/**
	 * Exit a parse tree produced by {@link crnParser#decl}.
	 * @param ctx the parse tree
	 */
	void exitDecl(@NotNull crnParser.DeclContext ctx);
}